package com.yeyks.service;

import com.yeyks.common.appcommon.result.CommonResult;
import com.yeyks.common.exception.TokenInvalidException;
import com.yeyks.entity.AppAccountInfo;

/**
 * token的管理服务
 * @author Administrator
 */
public interface AppAccountTokenService {

    /**
     * 根据accountId生成token
     * @param accountId 账户Id
     * @return 返回token
     */
    String userIdToken(Integer accountId);

    /**
     * 根据token获取userId
     * @param token token令牌
     * @return 返回结果
     * @throws TokenInvalidException 返回的异常
     */
    String getUserId(String token) throws TokenInvalidException;

    /**
     * 验证token是否有效
     * @param token token令牌
     * @return 返回true有效，false无效
     */
    Boolean isAvailable(String token);

    /**
     * 统一token 验证
     * @param token 账号token
     * @param version 版本
     * @param platform 平台
     * @return 返回账号信息
     */
    CommonResult<AppAccountInfo> getAvailAccount(String token, String version, String platform);


    /**
     * 根据有效token获取账号信息
     * @param token 有效token
     * @return 返回结果
     */
    AppAccountInfo getAccountByToken(String token);
}
